home *** CD-ROM | disk | FTP | other *** search
/ Mac Cube 4: Multimedia Applications / MacCube Volume 4: Multimedia Applications.iso / Graphics / POV Ray / POVSOURCE / SOURCE / Movies.h < prev    next >
Text File  |  1993-11-30  |  56KB  |  1,748 lines

  1. /************************************************************
  2.  
  3. Created: Tuesday, June 8, 1993 at 3:10 PM
  4.  Movies.h
  5.  C Interface to the Macintosh Libraries
  6.  
  7.  
  8.  Copyright Apple Computer, Inc. 1991, 1992
  9.  All rights reserved
  10.  
  11. ************************************************************/
  12.  
  13. #ifndef __MOVIES__
  14. #define __MOVIES__
  15.  
  16.  
  17. #ifndef __QUICKDRAW__
  18. #include <QuickDraw.h>
  19. #endif
  20.  
  21. #ifndef __ALIASES__
  22. #include <Aliases.h>
  23. #endif
  24.  
  25. #ifndef __EVENTS__
  26. #include <Events.h>
  27. #endif
  28.  
  29. #ifndef __MENUS__
  30. #include <Menus.h>
  31. #endif
  32.  
  33. #ifndef __COMPONENTS__
  34. #include <Components.h>
  35. #endif
  36.  
  37. #ifndef __IMAGECOMPRESSION__
  38. #include <ImageCompression.h>
  39. #endif
  40.  
  41. #ifndef kFix1
  42.     #define kFix1            (0x00010000)
  43. #endif
  44.  
  45. #define gestaltQuickTime 'qtim'
  46.  
  47. #define MovieFileType 'MooV'
  48.  
  49. #define MediaHandlerType 'mhlr'
  50. #define DataHandlerType 'dhlr'
  51.  
  52. #define VideoMediaType 'vide'
  53. #define SoundMediaType 'soun'
  54. #define TextMediaType 'text'
  55. #define BaseMediaType 'gnrc'
  56.  
  57. #define VisualMediaCharacteristic 'eyes'
  58. #define AudioMediaCharacteristic 'ears'
  59.  
  60. #define DoTheRightThing 0L
  61.  
  62. #define kFullVolume 0x100            /* 8.8 format */
  63. #define kNoVolume 0
  64.  
  65.  
  66.     struct MovieRecord {
  67.      long data[1];
  68.     };
  69.     
  70.     typedef struct MovieRecord MovieRecord;
  71.     typedef MovieRecord *Movie;
  72.     
  73.     struct TrackRecord {
  74.      long data[1];
  75.     };
  76.     
  77.     typedef struct TrackRecord TrackRecord;
  78.     typedef TrackRecord *Track;
  79.     
  80.     struct MediaRecord {
  81.      long data[1];
  82.     };
  83.     
  84.     typedef struct MediaRecord MediaRecord;
  85.     typedef MediaRecord *Media;
  86.     
  87.     struct UserDataRecord {
  88.      long data[1];
  89.     };
  90.     
  91.     typedef struct UserDataRecord UserDataRecord;
  92.     typedef UserDataRecord *UserData;
  93.     
  94.     struct TrackEditStateRecord {
  95.      long data[1];
  96.     };
  97.     
  98.     typedef struct TrackEditStateRecord TrackEditStateRecord;
  99.     typedef TrackEditStateRecord *TrackEditState;
  100.     
  101.     struct MovieEditStateRecord {
  102.      long data[1];
  103.     };
  104.     
  105.     typedef struct MovieEditStateRecord MovieEditStateRecord;
  106.     typedef MovieEditStateRecord *MovieEditState;
  107.  
  108. struct SampleDescription {
  109.     long descSize;
  110.     long dataFormat;
  111.     long resvd1;
  112.     short resvd2;
  113.     short dataRefIndex;
  114. };
  115.  
  116.     typedef struct SampleDescription SampleDescription;
  117.     typedef SampleDescription *SampleDescriptionPtr, **SampleDescriptionHandle;
  118.     
  119.  
  120.  
  121. struct SoundDescription {
  122.     long    descSize;            /* total size of SoundDescription including extra data */
  123.     long    dataFormat;            /*  */
  124.     long    resvd1;                /* reserved for apple use */
  125.     short     resvd2;
  126.     short     dataRefIndex;
  127.     short    version;            /* which version is this data */
  128.     short    revlevel;            /* what version of that codec did this */
  129.     long    vendor;                /* whose  codec compressed this data */
  130.     short    numChannels;        /* number of channels of sound */
  131.     short    sampleSize;            /* number of bits per sample */
  132.     short    compressionID;        /* sound compression used, 0 if none */
  133.     short    packetSize;            /* packet size for compression, 0 if no compression */
  134.     Fixed    sampleRate;            /* sample rate sound is captured at */
  135. };
  136.  
  137. typedef struct SoundDescription SoundDescription;
  138. typedef SoundDescription *SoundDescriptionPtr, **SoundDescriptionHandle;
  139.  
  140. struct TextDescription {
  141.     long    size;                    // Total size of TextDescription
  142.     long    type;                    // 'text'
  143.  
  144.     long    resvd1;
  145.     short    resvd2;
  146.     short    dataRefIndex;
  147.  
  148.     long    displayFlags;            // see enum below for flag values
  149.  
  150.     long     textJustification;        // Can be: teCenter,teFlush -Default,-Right,-Left
  151.     
  152.     RGBColor bgColor;                // Background color
  153.     
  154.     Rect    defaultTextBox;            // Location to place the text within the track bounds
  155.     ScrpSTElement defaultStyle;        // Default style (struct defined in TextEdit.h)
  156.     char    defaultFontName[1];        // Font Name (pascal string - struct extended to fit) 
  157. };
  158.  
  159. typedef struct TextDescription TextDescription;
  160. typedef TextDescription *TextDescriptionPtr, **TextDescriptionHandle;
  161.  
  162. enum {
  163.     dfDontDisplay = 1<<0,            // Don't display the text
  164.     dfDontAutoScale = 1<<1,            // Don't scale text as track bounds grows or shrinks
  165.     dfClipToTextBox = 1<<2,            // Clip update to the textbox
  166.     dfUseMovieBGColor = 1<<3,        // Set text background to movie's background color
  167.     dfShrinkTextBoxToFit = 1<<4,    // Compute minimum box to fit the sample
  168.     dfScrollIn = 1<<5,                // Scroll text in until last of text is in view 
  169.     dfScrollOut = 1<<6,                // Scroll text out until last of text is gone (if both set, scroll in then out)
  170.     dfHorizScroll = 1<<7,            // Scroll text horizontally (otherwise it's vertical)
  171.     dfReverseScroll = 1<<8,            // vert: scroll down rather than up; horiz: scroll backwards (justfication dependent)
  172.     dfContinuousScroll = 1<<9,        // new samples cause previous samples to scroll out 
  173.     dfFlowHoriz = 1<<10,            // horiz scroll text flows in textbox rather than extend to right 
  174.     dfDropShadow = 1<<12,            // display text with a drop shadow 
  175.     dfAntiAlias = 1<<13,            // attempt to display text anti aliased
  176.     dfKeyedText = 1<<14                // key the text over background
  177.     };
  178.  
  179. /* progress messages */
  180.  
  181. enum {
  182.     movieProgressOpen = 0,
  183.     movieProgressUpdatePercent = 1,
  184.     movieProgressClose = 2
  185. };
  186.  
  187. /* progress operations */
  188. enum {
  189.     progressOpFlatten = 1,
  190.     progressOpInsertTrackSegment,
  191.     progressOpInsertMovieSegment,
  192.     progressOpPaste,
  193.     progressOpAddMovieSelection,
  194.     progressOpCopy,
  195.     progressOpCut,
  196.     progressOpLoadMovieIntoRam,
  197.     progressOpLoadTrackIntoRam,
  198.     progressOpLoadMediaIntoRam,
  199.     progressOpImportMovie,
  200.     progressOpExportMovie
  201. };
  202.  
  203. enum {
  204.     mediaQualityDraft = 0x0000,
  205.     mediaQualityNormal = 0x0040,
  206.     mediaQualityBetter = 0x0080,
  207.     mediaQualityBest = 0x00C0
  208. };
  209.  
  210. typedef pascal OSErr (*MovieRgnCoverProc)(Movie theMovie, RgnHandle changedRgn, long refcon);        
  211. typedef pascal OSErr (*MovieProgressProcPtr)(Movie theMovie, short message, short whatOperation, Fixed percentDone, long refcon);        
  212. typedef pascal OSErr (*MovieDrawingCompleteProcPtr)(Movie theMovie, long refCon);
  213. typedef pascal OSErr (*TrackTransferProc)(Track t, long refCon);
  214.  
  215.  
  216. typedef ComponentInstance MediaHandler,DataHandler;
  217. typedef Component MediaHandlerComponent,DataHandlerComponent;
  218. typedef ComponentResult HandlerError;
  219.  
  220. #ifndef kSmallestArray
  221.     #define kSmallestArray    1
  222. #endif
  223.  
  224. /* TimeBase equates */
  225.  
  226. typedef long TimeValue;
  227. typedef long TimeScale;
  228.  
  229. #ifndef I64
  230. #define I64
  231. typedef struct
  232.     {
  233.     long hi;
  234.     long lo;
  235.     } Int64;
  236. #endif I64
  237.  
  238.  
  239. typedef Int64 CompTimeValue;
  240.  
  241. enum {
  242.     loopTimeBase = 1,
  243.     palindromeLoopTimeBase = 2
  244. };
  245. typedef unsigned long TimeBaseFlags;
  246.  
  247.     struct TimeBaseRecord {
  248.      long data[1];
  249.     };
  250.     
  251.     typedef struct TimeBaseRecord TimeBaseRecord;
  252.     typedef TimeBaseRecord *TimeBase;
  253.     
  254.     struct CallBackRecord {
  255.      long data[1];
  256.     };
  257.     
  258.     typedef struct CallBackRecord CallBackRecord;
  259.     typedef CallBackRecord *QTCallBack;
  260.  
  261. typedef struct TimeRecord
  262.     {
  263.     CompTimeValue value;    /* units */
  264.     TimeScale scale;        /* units per second */
  265.     TimeBase base;
  266.     } TimeRecord;
  267.  
  268. /* CallBack equates */
  269.  
  270.  enum
  271.     {
  272.     triggerTimeFwd        = 0x0001,    /* when curTime exceeds triggerTime going forward */
  273.     triggerTimeBwd        = 0x0002,    /* when curTime exceeds triggerTime going backwards */
  274.     triggerTimeEither    = 0x0003,    /* when curTime exceeds triggerTime going either direction */
  275.     triggerRateLT        = 0x0004,    /* when rate changes to less than trigger value */
  276.     triggerRateGT        = 0x0008,    /* when rate changes to greater than trigger value */
  277.     triggerRateEqual    = 0x0010,    /* when rate changes to equal trigger value */
  278.     triggerRateLTE        = triggerRateLT | triggerRateEqual,
  279.     triggerRateGTE        = triggerRateGT | triggerRateEqual,
  280.     triggerRateNotEqual    = triggerRateGT | triggerRateEqual | triggerRateLT,
  281.     triggerRateChange    = 0,
  282.     triggerAtStart        = 0x0001,
  283.     triggerAtStop        = 0x0002
  284.     };
  285. typedef unsigned short QTCallBackFlags;
  286.  
  287. enum
  288.     {
  289.     timeBaseBeforeStartTime = 1,
  290.     timeBaseAfterStopTime = 2
  291.     };
  292. typedef unsigned long TimeBaseStatus;
  293.  
  294. enum
  295.     {
  296.     callBackAtTime = 1,
  297.     callBackAtRate = 2,
  298.     callBackAtTimeJump = 3,
  299.     callBackAtExtremes = 4,
  300.     callBackAtInterrupt = 0x8000
  301.     };
  302. typedef unsigned short QTCallBackType;
  303.  
  304. typedef pascal void (*QTCallBackProc)(QTCallBack cb, long refCon);
  305.  
  306. enum {
  307.     qtcbNeedsRateChanges = 1,        /* wants to know about rate changes */
  308.     qtcbNeedsTimeChanges = 2,        /* wants to know about time changes */
  309.     qtcbNeedsStartStopChanges = 4    // wants to know when TimeBase start/stop is changed
  310. };
  311.  
  312.     typedef struct QTCallBackHeader {
  313.         long                    callBackFlags;
  314.         long                    reserved1;
  315.         char                    qtPrivate[40];
  316.     } QTCallBackHeader;
  317.  
  318.  
  319. enum {
  320.     keepInRam = 1<<0,                // load and make non-purgable
  321.     unkeepInRam = 1<<1,                // mark as purgable
  322.     flushFromRam = 1<<2,            // empty those handles
  323.     loadForwardTrackEdits = 1<<3,    //    load track edits into ram for playing forward
  324.     loadBackwardTrackEdits = 1<<4    //    load track edits into ram for playing in reverse
  325. };
  326.  
  327. typedef pascal Boolean (*MoviePreviewCallOutProc)(long refcon);        
  328.  
  329. enum {
  330.     newMovieActive = 1<<0,
  331.     newMovieDontResolveDataRefs = 1<<1,
  332.     newMovieDontAskUnresolvedDataRefs = 1<<2,
  333.     newMovieDontAutoAlternates = 1<<3
  334.     };
  335.     
  336. enum {                        /* track usage bits */
  337.     trackUsageInMovie = 1<<1,
  338.     trackUsageInPreview = 1<<2,
  339.     trackUsageInPoster = 1<<3
  340.     };
  341.  
  342. enum {            /* Add/GetMediaSample flags */
  343.     mediaSampleNotSync = 1<<0,        /* sample is not a sync sample (eg. is frame differenced */
  344.     mediaSampleShadowSync = 1<<1    /* sample is a shadow sync */
  345.     };
  346.  
  347. enum {
  348.     pasteInParallel = 1,
  349.     showUserSettingsDialog = 2
  350. };
  351.  
  352. enum {
  353.     nextTimeMediaSample = 1<<0,
  354.     nextTimeMediaEdit = 1<<1,
  355.     nextTimeTrackEdit = 1<<2,
  356.     nextTimeSyncSample = 1<<3,
  357.     nextTimeEdgeOK = 1<<14,
  358.     nextTimeIgnoreActiveSegment = 1<<15};
  359. typedef unsigned short nextTimeFlagsEnum;
  360.  
  361. enum {
  362.     createMovieFileDeleteCurFile = 1L<<31,
  363.     createMovieFileDontCreateMovie = 1L<<30,
  364.     createMovieFileDontOpenFile = 1L<<29
  365. };
  366. typedef unsigned long createMovieFileFlagsEnum;
  367.  
  368. enum {
  369.     flattenAddMovieToDataFork = 1L<<0,
  370.     flattenActiveTracksOnly = 1L<<2,
  371.     flattenDontInterleaveFlatten = 1L<<3
  372. };
  373. typedef unsigned long movieFlattenFlagsEnum;
  374.  
  375. enum {                        
  376.     movieInDataForkResID = -1        /* magic res ID */
  377.     };
  378.  
  379. enum {
  380.     mcTopLeftMovie = 1<<0,        /* usually centered */
  381.     mcScaleMovieToFit = 1<<1,    /* usually only scales down */
  382.     mcWithBadge = 1<<2,            /* give me a badge */
  383.     mcNotVisible = 1<<3,        /* don't show controller */
  384.     mcWithFrame = 1<<4            /* gimme a frame */
  385. };
  386.  
  387. enum {
  388.     movieScrapDontZeroScrap = 1<<0,
  389.     movieScrapOnlyPutMovie = 1<<1
  390. };
  391.  
  392. enum {
  393.     dataRefSelfReference = 1<<0,
  394.     dataRefWasNotResolved = 1<<1
  395. };
  396. typedef unsigned long dataRefAttributesFlags;
  397.  
  398. enum {
  399.     hintsScrubMode    = 1<<0,        /* mask == && (if flags == scrub on, flags != scrub off) */ 
  400.     hintsUseScreenBuffer = 1<<5,
  401.     hintsAllowInterlace = 1<<6,
  402.     hintsUseSoundInterp = 1<<7,
  403.     hintsHighQuality = 1<<8            /* slooooow */
  404.     } ;
  405. typedef unsigned long playHintsEnum;
  406.  
  407. enum {
  408.     mediaHandlerFlagBaseClient = 1
  409. };
  410.  
  411. typedef unsigned long mediaHandlerFlagsEnum;
  412.  
  413. #ifdef __cplusplus
  414. extern "C" {
  415. #endif __cplusplus
  416.  
  417. /*************************
  418. * Initialization Routines 
  419. **************************/
  420.  
  421. pascal OSErr EnterMovies( void )
  422.         = {0x7001,0xAAAA};
  423. pascal void ExitMovies( void )
  424.         = {0x7002,0xAAAA};
  425.  
  426. /*************************
  427. * Error Routines 
  428. **************************/
  429.  
  430.     typedef pascal void (*ErrorProcPtr)(OSErr theErr, long refcon);            
  431.  
  432.  
  433. pascal OSErr GetMoviesError( void )
  434.         = {0x7003,0xAAAA};
  435. pascal void ClearMoviesStickyError( void )
  436.         = {0x303C,0xDE,0xAAAA};
  437. pascal OSErr GetMoviesStickyError( void )
  438.         = {0x7004,0xAAAA};
  439.  
  440. pascal void SetMoviesErrorProc( ErrorProcPtr errProc, long refcon )
  441.         = {0x303C,0xEF,0xAAAA};
  442.  
  443. /*************************
  444. * Idle Routines 
  445. **************************/
  446.  
  447. pascal void MoviesTask( Movie theMovie, long maxMilliSecToUse )
  448.         = {0x7005,0xAAAA};
  449. pascal OSErr PrerollMovie( Movie theMovie, TimeValue time, Fixed Rate )
  450.         = {0x7006,0xAAAA};
  451.  
  452. pascal OSErr LoadMovieIntoRam( Movie theMovie, TimeValue time, TimeValue duration, long flags )
  453.         = {0x7007,0xAAAA};
  454. pascal OSErr LoadTrackIntoRam( Track theTrack, TimeValue time, TimeValue duration, long flags )
  455.         = {0x303C,0x16E,0xAAAA};
  456. pascal OSErr LoadMediaIntoRam( Media theMedia, TimeValue time, TimeValue duration, long flags )
  457.         = {0x7008,0xAAAA};
  458.  
  459. pascal void SetMovieActive( Movie theMovie, Boolean active )
  460.         = {0x7009,0xAAAA};
  461. pascal Boolean GetMovieActive( Movie theMovie )
  462.         = {0x700A,0xAAAA};
  463.  
  464. /*************************
  465. * calls for playing movies, previews, posters
  466. **************************/
  467.  
  468. pascal void StartMovie( Movie theMovie )
  469.         = {0x700B,0xAAAA};
  470. pascal void StopMovie( Movie theMovie )
  471.         = {0x700C,0xAAAA};
  472. pascal void GoToBeginningOfMovie( Movie theMovie )
  473.         = {0x700D,0xAAAA};
  474. pascal void GoToEndOfMovie( Movie theMovie )
  475.         = {0x700E,0xAAAA};
  476. pascal Boolean IsMovieDone( Movie theMovie )
  477.         = {0x303C,0xDD,0xAAAA};
  478.  
  479. pascal Boolean GetMoviePreviewMode( Movie theMovie )
  480.         = {0x700F,0xAAAA};
  481. pascal void SetMoviePreviewMode( Movie theMovie, Boolean usePreview )
  482.         = {0x7010,0xAAAA};
  483. pascal void ShowMoviePoster( Movie theMovie )
  484.         = {0x7011,0xAAAA};
  485.  
  486. pascal void PlayMoviePreview( Movie theMovie, MoviePreviewCallOutProc callOutProc, long refcon )
  487.         = {0x303C,0xF2,0xAAAA};
  488.  
  489. /*************************
  490. * calls for controlling movies & tracks which are playing
  491. **************************/
  492.  
  493. pascal TimeBase GetMovieTimeBase( Movie theMovie )
  494.         = {0x7012,0xAAAA};
  495.  
  496. pascal void SetMovieMasterTimeBase( Movie theMovie, TimeBase tb,
  497.         const TimeRecord *slaveZero)
  498.         = {0x303C,0x167,0xAAAA};
  499. pascal void SetMovieMasterClock( Movie theMovie, Component clockMeister,
  500.         const TimeRecord *slaveZero )
  501.         = {0x303C,0x168,0xAAAA};
  502.  
  503. pascal void GetMovieGWorld( Movie theMovie, CGrafPtr *port, GDHandle *gdh )
  504.         = {0x7015,0xAAAA};
  505. pascal void SetMovieGWorld( Movie theMovie, CGrafPtr port, GDHandle gdh )
  506.         = {0x7016,0xAAAA};
  507. pascal void SetMovieDrawingCompleteProc( Movie theMovie, MovieDrawingCompleteProcPtr proc, long refCon)
  508.         = {0x303C,0x10A,0xAAAA};
  509.  
  510. pascal void SetTrackGWorld( Track theTrack, CGrafPtr port, GDHandle gdh, TrackTransferProc proc, long refCon)
  511.         = {0x303C,0x9D,0xAAAA};
  512.  
  513. pascal PicHandle GetMoviePict ( Movie theMovie, TimeValue time )
  514.         = {0x701D,0xAAAA};
  515. pascal PicHandle GetTrackPict ( Track theTrack, TimeValue time )
  516.         = {0x701E,0xAAAA};
  517.  
  518. pascal PicHandle GetMoviePosterPict ( Movie theMovie )
  519.         = {0x303C,0xF7,0xAAAA};
  520.  
  521. pascal OSErr UpdateMovie( Movie theMovie )
  522.         = {0x701F,0xAAAA};    /* called between Begin & EndUpdate */
  523.  
  524.  
  525. /**** spatial movie routines ****/
  526.  
  527. pascal void GetMovieBox( Movie theMovie, Rect *boxRect )
  528.         = {0x303C,0xF9,0xAAAA};
  529. pascal void SetMovieBox( Movie theMovie, const Rect *boxRect )
  530.         = {0x303C,0xFA,0xAAAA};
  531.  
  532. /** movie display clip */
  533. pascal RgnHandle GetMovieDisplayClipRgn( Movie theMovie )
  534.         = {0x303C,0xFC,0xAAAA};
  535. pascal void SetMovieDisplayClipRgn( Movie theMovie, RgnHandle theClip )
  536.         = {0x303C,0xFD,0xAAAA};
  537.  
  538. /** movie src clip */
  539. pascal RgnHandle GetMovieClipRgn( Movie theMovie )
  540.         = {0x303C,0x100,0xAAAA};
  541. pascal void SetMovieClipRgn( Movie theMovie, RgnHandle theClip )
  542.         = {0x303C,0x101,0xAAAA};
  543.  
  544. /** track src clip */
  545. pascal RgnHandle GetTrackClipRgn( Track theTrack )
  546.         = {0x303C,0x102,0xAAAA};
  547. pascal void SetTrackClipRgn( Track theTrack, RgnHandle theClip )
  548.         = {0x303C,0x103,0xAAAA};
  549.  
  550. /** bounds in display space (not clipped by display clip) */
  551. pascal RgnHandle GetMovieDisplayBoundsRgn( Movie theMovie )
  552.         = {0x303C,0xFB,0xAAAA};
  553. pascal RgnHandle GetTrackDisplayBoundsRgn( Track theTrack )
  554.         = {0x303C,0x112,0xAAAA};
  555.  
  556. /** bounds in movie space */
  557. pascal RgnHandle GetMovieBoundsRgn( Movie theMovie )
  558.         = {0x303C,0xFE,0xAAAA};
  559. pascal RgnHandle GetTrackMovieBoundsRgn( Track theTrack )
  560.         = {0x303C,0xFF,0xAAAA};
  561.  
  562. /** bounds in track space */
  563. pascal RgnHandle GetTrackBoundsRgn( Track theTrack )
  564.         = {0x303C,0x111,0xAAAA};
  565.  
  566. /** mattes - always in track space */
  567. pascal PixMapHandle GetTrackMatte( Track theTrack )
  568.         = {0x303C,0x115,0xAAAA};
  569. pascal void SetTrackMatte( Track theTrack, PixMapHandle theMatte)
  570.         = {0x303C,0x116,0xAAAA};
  571. pascal void DisposeMatte( PixMapHandle theMatte )
  572.         = {0x303C,0x14A,0xAAAA};
  573.  
  574. /*************************
  575. * calls for getting/saving movies
  576. **************************/
  577.  
  578. pascal Movie NewMovie( long flags )
  579.         = {0x303C,0x187,0xAAAA};
  580.  
  581. pascal OSErr PutMovieIntoHandle( Movie theMovie, Handle publicMovie )
  582.         = {0x7022,0xAAAA};
  583.  
  584. pascal OSErr PutMovieIntoDataFork( Movie theMovie, short fRefNum, long offset, long maxSize )
  585.         = {0x303C,0x1B4,0xAAAA};
  586.  
  587. pascal void DisposeMovie( Movie theMovie )
  588.         = {0x7023,0xAAAA};
  589.  
  590. /*************************
  591. * Movie State Routines
  592. **************************/
  593.  
  594. pascal unsigned long GetMovieCreationTime( Movie theMovie )
  595.         = {0x7026,0xAAAA};
  596. pascal unsigned long GetMovieModificationTime( Movie theMovie )
  597.         = {0x7027,0xAAAA};
  598.  
  599. pascal TimeScale GetMovieTimeScale( Movie theMovie )
  600.         = {0x7029,0xAAAA};
  601. pascal void SetMovieTimeScale( Movie theMovie, TimeScale timeScale )
  602.         = {0x702A,0xAAAA};
  603.  
  604. pascal TimeValue GetMovieDuration( Movie theMovie )
  605.         = {0x702B,0xAAAA};
  606.  
  607. pascal Fixed GetMovieRate( Movie theMovie )
  608.         = {0x702C,0xAAAA};
  609. pascal void SetMovieRate( Movie theMovie, Fixed rate )
  610.         = {0x702D,0xAAAA};
  611.  
  612. pascal Fixed GetMoviePreferredRate( Movie theMovie )
  613.         = {0x303C,0xF3,0xAAAA};
  614. pascal void SetMoviePreferredRate( Movie theMovie, Fixed rate )
  615.         = {0x303C,0xF4,0xAAAA};
  616.  
  617. pascal short GetMoviePreferredVolume( Movie theMovie )
  618.         = {0x303C,0xF5,0xAAAA};
  619. pascal void  SetMoviePreferredVolume( Movie theMovie, short volume )
  620.         = {0x303C,0xF6,0xAAAA};
  621.     
  622. pascal short GetMovieVolume( Movie theMovie )
  623.         = {0x702E,0xAAAA};
  624. pascal void  SetMovieVolume( Movie theMovie, short volume )
  625.         = {0x702F,0xAAAA};
  626.  
  627. pascal void GetMovieMatrix( Movie theMovie, MatrixRecord *matrix )
  628.         = {0x7031,0xAAAA};
  629. pascal void SetMovieMatrix( Movie theMovie, const MatrixRecord *matrix )
  630.         = {0x7032,0xAAAA};
  631.  
  632. pascal void GetMoviePreviewTime( Movie theMovie, 
  633.     TimeValue *previewTime, TimeValue *previewDuration )
  634.         = {0x7033,0xAAAA};
  635. pascal void SetMoviePreviewTime( Movie theMovie, 
  636.     TimeValue previewTime, TimeValue previewDuration )
  637.         = {0x7034,0xAAAA};
  638.  
  639. pascal TimeValue GetMoviePosterTime( Movie theMovie )
  640.         = {0x7035,0xAAAA};
  641. pascal void SetMoviePosterTime( Movie theMovie, TimeValue posterTime )
  642.         = {0x7036,0xAAAA};
  643.  
  644. pascal void GetMovieSelection( Movie theMovie, 
  645.     TimeValue *selectionTime, TimeValue *selectionDuration )
  646.         = {0x7037,0xAAAA};
  647. pascal void SetMovieSelection( Movie theMovie, 
  648.     TimeValue selectionTime, TimeValue selectionDuration )
  649.         = {0x7038,0xAAAA};
  650.  
  651. pascal void SetMovieActiveSegment(Movie theMovie, TimeValue startTime, TimeValue duration)
  652.         = {0x303C,0x15C,0xAAAA};
  653. pascal void GetMovieActiveSegment(Movie theMovie, TimeValue *startTime, TimeValue *duration)
  654.         = {0x303C,0x15D,0xAAAA};
  655.  
  656. pascal TimeValue GetMovieTime( Movie theMovie, TimeRecord *currentTime )
  657.         = {0x7039,0xAAAA};
  658.  
  659. pascal void SetMovieTime( Movie theMovie, const TimeRecord *newtime )
  660.         = {0x703C,0xAAAA};
  661. pascal void SetMovieTimeValue( Movie theMovie, TimeValue newtime )
  662.         = {0x703D,0xAAAA};
  663.  
  664.  
  665. pascal UserData GetMovieUserData( Movie theMovie )
  666.         = {0x703E,0xAAAA};
  667.  
  668.  
  669. /*************************
  670. * Track/Media finding routines
  671. **************************/
  672.  
  673. pascal long GetMovieTrackCount( Movie theMovie )
  674.         = {0x703F,0xAAAA};
  675. pascal Track GetMovieTrack( Movie theMovie, long trackID )
  676.         = {0x7040,0xAAAA};
  677.  
  678. pascal Track GetMovieIndTrack( Movie theMovie, long index )
  679.         = {0x303C,0x117,0xAAAA};
  680.  
  681. pascal long GetTrackID( Track theTrack )
  682.         = {0x303C,0x127,0xAAAA};
  683.  
  684. pascal Movie GetTrackMovie( Track theTrack )
  685.         = {0x303C,0xD0,0xAAAA};
  686.  
  687. /*************************
  688. * Track creation routines
  689. **************************/
  690.  
  691. pascal Track NewMovieTrack( Movie theMovie, Fixed width, Fixed height, short trackVolume)
  692.         = {0x303C,0x188,0xAAAA};
  693. pascal void DisposeMovieTrack( Track theTrack )
  694.         = {0x7042,0xAAAA};
  695.  
  696. /*************************
  697. * Track State routines
  698. **************************/
  699.  
  700. pascal unsigned long GetTrackCreationTime( Track theTrack )
  701.         = {0x7043,0xAAAA};
  702. pascal unsigned long GetTrackModificationTime( Track theTrack )
  703.         = {0x7044,0xAAAA};
  704.  
  705.  
  706. pascal Boolean GetTrackEnabled( Track theTrack )
  707.         = {0x7045,0xAAAA};
  708. pascal void SetTrackEnabled( Track theTrack, Boolean isEnabled )
  709.         = {0x7046,0xAAAA};
  710.  
  711. pascal long GetTrackUsage( Track theTrack )
  712.         = {0x7047,0xAAAA};
  713. pascal void SetTrackUsage( Track theTrack, long usage )
  714.         = {0x7048,0xAAAA};
  715.  
  716. pascal TimeValue GetTrackDuration( Track theTrack )
  717.         = {0x704B,0xAAAA};
  718.  
  719. pascal TimeValue GetTrackOffset( Track theTrack )
  720.         = {0x704C,0xAAAA};
  721. pascal void SetTrackOffset( Track theTrack, TimeValue movieOffsetTime )
  722.         = {0x704D,0xAAAA};
  723.  
  724. pascal short GetTrackLayer( Track theTrack )
  725.         = {0x7050,0xAAAA};
  726. pascal void SetTrackLayer( Track theTrack, short layer )
  727.         = {0x7051,0xAAAA};
  728.  
  729. pascal Track GetTrackAlternate( Track theTrack )
  730.         = {0x7052,0xAAAA};
  731. pascal void SetTrackAlternate( Track theTrack, Track alternateT )
  732.         = {0x7053,0xAAAA};
  733.  
  734. pascal void SetAutoTrackAlternatesEnabled(Movie theMovie, Boolean enable)
  735.         = {0x303C,0x15E,0xAAAA};
  736. pascal void SelectMovieAlternates(Movie theMovie)
  737.         = {0x303C,0x15F,0xAAAA};
  738.  
  739. pascal short GetTrackVolume( Track theTrack )
  740.         = {0x7054,0xAAAA};
  741. pascal void SetTrackVolume( Track theTrack, short volume )
  742.         = {0x7055,0xAAAA};
  743.  
  744. pascal void GetTrackMatrix( Track theTrack, MatrixRecord *matrix )
  745.         = {0x7056,0xAAAA};
  746. pascal void SetTrackMatrix( Track theTrack, const MatrixRecord *matrix )
  747.         = {0x7057,0xAAAA};
  748.  
  749. pascal void GetTrackDimensions( Track theTrack, Fixed *width, Fixed *height )
  750.         = {0x705D,0xAAAA};
  751. pascal void SetTrackDimensions( Track theTrack, Fixed width, Fixed height )
  752.         = {0x705E,0xAAAA};
  753.  
  754. pascal UserData GetTrackUserData( Track theTrack )
  755.         = {0x705F,0xAAAA};
  756.  
  757.  
  758. /*************************
  759. * get Media routines
  760. **************************/
  761.  
  762. pascal Media NewTrackMedia( Track theTrack, OSType mediaType, TimeScale timeScale, 
  763.         Handle dataRef, OSType dataRefType )
  764.         = {0x303C,0x18E,0xAAAA};
  765.  
  766. pascal void DisposeTrackMedia( Media theMedia )
  767.         = {0x7061,0xAAAA};
  768.  
  769. pascal Media GetTrackMedia( Track theTrack )
  770.         = {0x7062,0xAAAA};
  771. pascal Track GetMediaTrack( Media theMedia )
  772.         = {0x303C,0xC5,0xAAAA};
  773.  
  774.  
  775.  
  776. /*************************
  777. * Media State routines
  778. **************************/
  779.  
  780. pascal unsigned long GetMediaCreationTime( Media theMedia )
  781.         = {0x7066,0xAAAA};
  782. pascal unsigned long GetMediaModificationTime( Media theMedia )
  783.         = {0x7067,0xAAAA};
  784.  
  785. pascal TimeScale GetMediaTimeScale( Media theMedia )
  786.         = {0x7068,0xAAAA};
  787. pascal void SetMediaTimeScale( Media theMedia, TimeScale timeScale )
  788.         = {0x7069,0xAAAA};
  789.  
  790. pascal TimeValue GetMediaDuration( Media theMedia )
  791.         = {0x706A,0xAAAA};
  792.  
  793. pascal short GetMediaLanguage( Media theMedia )
  794.         = {0x706B,0xAAAA};
  795. pascal void SetMediaLanguage( Media theMedia, short language )
  796.         = {0x706C,0xAAAA};
  797.  
  798. pascal short GetMediaQuality( Media theMedia )
  799.         = {0x706D,0xAAAA};
  800. pascal void SetMediaQuality( Media theMedia, short quality )
  801.         = {0x706E,0xAAAA};
  802.  
  803. pascal void GetMediaHandlerDescription( Media theMedia, OSType *mediaType, Str255 creatorName, OSType *creatorManufacturer )
  804.         = {0x706F,0xAAAA};
  805.  
  806. pascal UserData GetMediaUserData( Media theMedia )
  807.         = {0x7070,0xAAAA};
  808.  
  809.  
  810. /*************************
  811. * Media Handler routines
  812. **************************/
  813.  
  814. pascal MediaHandler GetMediaHandler( Media theMedia )
  815.         = {0x7071,0xAAAA};
  816.  
  817. pascal OSErr SetMediaHandler( Media theMedia, MediaHandlerComponent mH )
  818.         = {0x303C,0x190,0xAAAA};
  819.  
  820.  
  821. /*************************
  822. * Media's Data routines
  823. **************************/
  824.  
  825. pascal OSErr BeginMediaEdits( Media theMedia )
  826.         = {0x7072,0xAAAA};
  827. pascal OSErr EndMediaEdits( Media theMedia )
  828.         = {0x7073,0xAAAA};
  829.  
  830. pascal void GetMediaDataHandlerDescription( Media theMedia, short index, OSType *dhType, Str255 creatorName, OSType *creatorManufacturer )
  831.         = {0x303C,0x19E,0xAAAA};
  832.  
  833. pascal DataHandler GetMediaDataHandler( Media theMedia, short index )
  834.         = {0x303C,0x19F,0xAAAA};
  835. pascal OSErr SetMediaDataHandler( Media theMedia, short index, DataHandlerComponent dataHandler )
  836.         = {0x303C,0x1A0,0xAAAA};
  837.  
  838.  
  839. /*************************
  840. * Media Sample Table Routines
  841. **************************/
  842.  
  843. pascal long GetMediaSampleDescriptionCount( Media theMedia )
  844.         = {0x7077,0xAAAA};
  845. pascal void GetMediaSampleDescription( Media theMedia, long index, SampleDescriptionHandle descH )
  846.         = {0x7078,0xAAAA};
  847. pascal OSErr SetMediaSampleDescription( Media theMedia, long index, SampleDescriptionHandle descH )
  848.         = {0x303C,0x1D0,0xAAAA};
  849.  
  850. pascal long GetMediaSampleCount( Media theMedia )
  851.         = {0x7079,0xAAAA};
  852.  
  853. pascal void SampleNumToMediaTime( Media theMedia, long logicalSampleNum, 
  854.         TimeValue *sampleTime, TimeValue *sampleDuration )
  855.         = {0x707A,0xAAAA};
  856.  
  857. pascal void MediaTimeToSampleNum( Media theMedia, TimeValue time, 
  858.         long *sampleNum, TimeValue *sampleTime, TimeValue *sampleDuration )
  859.         = {0x707B,0xAAAA};
  860.  
  861.  
  862. pascal OSErr AddMediaSample( Media theMedia, Handle dataIn, long inOffset, unsigned long size,
  863.     TimeValue durationPerSample,
  864.     SampleDescriptionHandle sampleDescriptionH, 
  865.     long numberOfSamples, short sampleFlags, TimeValue *sampleTime )
  866.         = {0x707C,0xAAAA};
  867.  
  868. pascal OSErr AddMediaSampleReference( Media theMedia, long dataOffset, unsigned long size,
  869.     TimeValue durationPerSample,
  870.     SampleDescriptionHandle sampleDescriptionH, 
  871.     long numberOfSamples, short sampleFlags, TimeValue *sampleTime )
  872.         = {0x707D,0xAAAA}; 
  873.  
  874. pascal OSErr GetMediaSample( Media theMedia, Handle dataOut, long maxSizeToGrow, long *size,
  875.     TimeValue time, TimeValue *sampleTime, TimeValue *durationPerSample,
  876.     SampleDescriptionHandle sampleDescriptionH, long *sampleDescriptionIndex,
  877.     long maxNumberOfSamples, long *numberOfSamples, short *sampleFlags )
  878.         = {0x707E,0xAAAA};    
  879.  
  880. pascal OSErr GetMediaSampleReference( Media theMedia, long *dataOffset, long *size, 
  881.     TimeValue time, TimeValue *sampleTime, TimeValue *durationPerSample,
  882.     SampleDescriptionHandle sampleDescriptionH, long *sampleDescriptionIndex, 
  883.     long maxNumberOfSamples, long *numberOfSamples, short *sampleFlags )
  884.         = {0x707F,0xAAAA};    
  885.  
  886. pascal OSErr SetMediaShadowSync( Media theMedia, long frameDiffSampleNum, long syncSampleNum )
  887.         = {0x303C,0x121,0xAAAA};    
  888. pascal OSErr GetMediaShadowSync( Media theMedia, long frameDiffSampleNum, long *syncSampleNum )
  889.         = {0x303C,0x122,0xAAAA};    
  890.  
  891.  
  892.  
  893.  
  894.  
  895. /*************************
  896. * Editing Routines
  897. **************************/
  898.  
  899. pascal OSErr InsertMediaIntoTrack( Track theTrack,
  900.             TimeValue trackStart, 
  901.             TimeValue mediaTime, TimeValue mediaDuration, 
  902.             Fixed mediaRate )
  903.         = {0x303C,0x183,0xAAAA};
  904.  
  905. pascal OSErr InsertTrackSegment( Track srcTrack, Track dstTrack,
  906.             TimeValue srcIn, TimeValue srcDuration, TimeValue dstIn )
  907.         = {0x303C,0x85,0xAAAA};
  908. pascal OSErr InsertMovieSegment( Movie srcMovie, Movie dstMovie,
  909.             TimeValue srcIn, TimeValue srcDuration, TimeValue dstIn )
  910.         = {0x303C,0x86,0xAAAA};
  911. pascal OSErr InsertEmptyTrackSegment( Track dstTrack,
  912.             TimeValue dstIn, TimeValue dstDuration )
  913.         = {0x303C,0x87,0xAAAA};
  914. pascal OSErr InsertEmptyMovieSegment( Movie dstMovie,
  915.             TimeValue dstIn, TimeValue dstDuration )
  916.         = {0x303C,0x88,0xAAAA};
  917. pascal OSErr DeleteTrackSegment( Track theTrack, TimeValue in, TimeValue duration )
  918.         = {0x303C,0x89,0xAAAA};
  919. pascal OSErr DeleteMovieSegment( Movie theMovie, TimeValue in, TimeValue duration )
  920.         = {0x303C,0x8A,0xAAAA};
  921. pascal OSErr ScaleTrackSegment( Track theTrack, TimeValue in, 
  922.             TimeValue oldDuration, TimeValue newDuration )
  923.         = {0x303C,0x8B,0xAAAA};
  924. pascal OSErr ScaleMovieSegment( Movie theMovie, TimeValue in,  
  925.             TimeValue oldDuration, TimeValue newDuration )
  926.         = {0x303C,0x8C,0xAAAA};
  927.  
  928.  
  929. /*************************
  930. * Hi-level Editing Routines
  931. **************************/
  932.  
  933. pascal Movie CutMovieSelection( Movie theMovie )
  934.         = {0x303C,0x8D,0xAAAA};
  935. pascal Movie CopyMovieSelection( Movie theMovie )
  936.         = {0x303C,0x8E,0xAAAA};
  937. pascal void PasteMovieSelection( Movie theMovie, Movie src )
  938.         = {0x303C,0x8F,0xAAAA};
  939. pascal void AddMovieSelection( Movie theMovie, Movie src )
  940.         = {0x303C,0x152,0xAAAA};
  941. pascal void ClearMovieSelection( Movie theMovie )
  942.         = {0x303C,0xE1,0xAAAA};
  943. pascal OSErr PasteHandleIntoMovie(Handle h, OSType handleType, Movie theMovie, long flags, ComponentInstance userComp)
  944.         = {0x303C,0xCB,0xAAAA};
  945. pascal OSErr PutMovieIntoTypedHandle(Movie theMovie, Track targetTrack, OSType handleType, Handle publicMovie,
  946.                 TimeValue start, TimeValue dur, long flags, ComponentInstance userComp)
  947.         = {0x303C,0x1CD,0xAAAA};
  948. pascal Component IsScrapMovie(Track targetTrack)
  949.         = {0x303C,0xCC,0xAAAA};
  950.  
  951. /*************************
  952. * Middle-level Editing Routines
  953. **************************/
  954.  
  955. pascal OSErr CopyTrackSettings(Track srcTrack, Track dstTrack)
  956.         = {0x303C,0x153,0xAAAA};
  957. pascal OSErr CopyMovieSettings(Movie srcMovie, Movie dstMovie)
  958.         = {0x303C,0x154,0xAAAA};
  959.  
  960. /*************************
  961. * movie & track edit state routines
  962. **************************/
  963. pascal MovieEditState NewMovieEditState(Movie theMovie)
  964.         = {0x303C,0x104,0xAAAA};
  965. pascal OSErr UseMovieEditState(Movie theMovie, MovieEditState toState)
  966.         = {0x303C,0x105,0xAAAA};
  967. pascal OSErr DisposeMovieEditState(MovieEditState state)
  968.         = {0x303C,0x106,0xAAAA};
  969.  
  970. pascal TrackEditState NewTrackEditState(Track theTrack)
  971.         = {0x303C,0x107,0xAAAA};
  972. pascal OSErr UseTrackEditState(Track theTrack, TrackEditState state)
  973.         = {0x303C,0x108,0xAAAA};
  974. pascal OSErr DisposeTrackEditState(TrackEditState state)
  975.         = {0x303C,0x109,0xAAAA};
  976.  
  977. /*************************
  978. * high level file conversion routines
  979. **************************/
  980. pascal OSErr ConvertFileToMovieFile(const FSSpec *inputFile, const FSSpec *outputFile,
  981.         OSType creator, ScriptCode scriptTag, short *resID, long flags, ComponentInstance userComp,
  982.         MovieProgressProcPtr proc, long refCon)
  983.         = {0x303C,0x1CB,0xAAAA};
  984. pascal OSErr ConvertMovieToFile(Movie theMovie, Track onlyTrack, const FSSpec *outputFile,
  985.         OSType fileType, OSType creator, ScriptCode scriptTag, short *resID, long flags,
  986.         ComponentInstance userComp)
  987.         = {0x303C,0x1CC,0xAAAA};
  988.  
  989. /*************************
  990. * Movie Timebase Conversion Routines
  991. **************************/
  992.  
  993. pascal TimeValue TrackTimeToMediaTime( TimeValue value, Track theTrack )
  994.         = {0x303C,0x96,0xAAAA};
  995. pascal Fixed GetTrackEditRate(Track theTrack, TimeValue atTime)
  996.         = {0x303C,0x123,0xAAAA};
  997.  
  998.  
  999. /*************************
  1000. * Miscellaneous Routines
  1001. **************************/
  1002.  
  1003.  
  1004. pascal long GetMovieDataSize( Movie theMovie, TimeValue startTime, TimeValue duration )
  1005.         = {0x303C,0x98,0xAAAA};
  1006. pascal long GetTrackDataSize( Track theTrack, TimeValue startTime, TimeValue duration )
  1007.         = {0x303C,0x149,0xAAAA};
  1008. pascal long GetMediaDataSize( Media theMedia, TimeValue startTime, TimeValue duration)
  1009.         = {0x303C,0x99,0xAAAA};
  1010.  
  1011. pascal Boolean PtInMovie( Movie theMovie, Point pt )
  1012.         = {0x303C,0x9A,0xAAAA};
  1013. pascal Boolean PtInTrack( Track theTrack, Point pt )
  1014.         = {0x303C,0x9B,0xAAAA};
  1015.  
  1016.  
  1017. /*************************
  1018. * Group Selection Routines
  1019. **************************/
  1020.  
  1021.  
  1022. pascal void SetMovieLanguage( Movie theMovie, long language )
  1023.         = {0x303C,0x9C,0xAAAA};
  1024.  
  1025.  
  1026.  
  1027.  
  1028.  
  1029. /*************************
  1030. * User Data
  1031. **************************/
  1032.  
  1033.  
  1034. pascal OSErr GetUserData( UserData theUserData, Handle data, OSType udType, long index )
  1035.         = {0x303C,0x9E,0xAAAA};
  1036. pascal OSErr AddUserData( UserData theUserData, Handle data, OSType udType )
  1037.         = {0x303C,0x9F,0xAAAA};
  1038. pascal OSErr RemoveUserData( UserData theUserData, OSType udType, long index )
  1039.         = {0x303C,0xA0,0xAAAA};
  1040. pascal short CountUserDataType(UserData theUserData, OSType udType)
  1041.         = {0x303C,0x14B,0xAAAA};
  1042. pascal long GetNextUserDataType(UserData theUserData, OSType udType)
  1043.         = {0x303C,0x1A5,0xAAAA};
  1044. pascal OSErr GetUserDataItem(UserData theUserData, void *data, long size, OSType udType, long index )
  1045.         = {0x303C,0x126,0xAAAA};
  1046. pascal OSErr SetUserDataItem(UserData theUserData, void *data, long size, OSType udType, long index )
  1047.         = {0x303C,0x12E,0xAAAA};
  1048.  
  1049. pascal OSErr AddUserDataText(UserData theUserData, Handle data, OSType udType, long index,
  1050.                 short itlRegionTag)
  1051.         = {0x303C,0x14C,0xAAAA};
  1052. pascal OSErr GetUserDataText(UserData theUserData, Handle data, OSType udType, long index,
  1053.                 short itlRegionTag)
  1054.         = {0x303C,0x14D,0xAAAA};
  1055. pascal OSErr RemoveUserDataText(UserData theUserData, OSType udType, long index,
  1056.                 short itlRegionTag)
  1057.         = {0x303C,0x14E,0xAAAA};
  1058.  
  1059. pascal OSErr NewUserData(UserData *theUserData)
  1060.         = {0x303C,0x12F,0xAAAA};
  1061. pascal OSErr DisposeUserData(UserData theUserData)
  1062.         = {0x303C,0x130,0xAAAA};
  1063. pascal OSErr NewUserDataFromHandle(Handle h, UserData *theUserData)
  1064.         = {0x303C,0x131,0xAAAA};
  1065. pascal OSErr PutUserDataIntoHandle(UserData theUserData, Handle h)
  1066.         = {0x303C,0x132,0xAAAA};
  1067.  
  1068. pascal void GetMediaNextInterestingTime( Media theMedia, short interestingTimeFlags, TimeValue time, Fixed rate,
  1069.         TimeValue *interestingTime, TimeValue *interestingDuration )
  1070.         = {0x303C,0x16D,0xAAAA};
  1071. pascal void GetTrackNextInterestingTime( Track theTrack, short interestingTimeFlags, TimeValue time, Fixed rate,
  1072.         TimeValue *interestingTime, TimeValue *interestingDuration )
  1073.         = {0x303C,0xE2,0xAAAA};
  1074. pascal void GetMovieNextInterestingTime( Movie theMovie, short interestingTimeFlags, 
  1075.         short numMediaTypes, const OSType *whichMediaTypes,
  1076.         TimeValue time, Fixed rate,
  1077.         TimeValue *interestingTime, TimeValue *interestingDuration )
  1078.         = {0x303C,0x10E,0xAAAA};
  1079.  
  1080.  
  1081. pascal OSErr CreateMovieFile( const FSSpec *fileSpec, OSType creator,
  1082.             ScriptCode scriptTag, long createMovieFileFlags, short *resRefNum, Movie *newmovie  )
  1083.         = {0x303C,0x191,0xAAAA};
  1084.  
  1085. pascal OSErr OpenMovieFile( const FSSpec *fileSpec, short *resRefNum, char perms )
  1086.         = {0x303C,0x192,0xAAAA};
  1087.  
  1088. pascal OSErr CloseMovieFile( short resRefNum )
  1089.         = {0x303C,0xD5,0xAAAA};
  1090.  
  1091. pascal OSErr DeleteMovieFile( const FSSpec *fileSpec )
  1092.         = {0x303C,0x175,0xAAAA};
  1093.  
  1094. pascal OSErr NewMovieFromFile( Movie *theMovie, short resRefNum, short *resId, StringPtr resName,
  1095.              short newMovieFlags, Boolean *dataRefWasChanged )
  1096.         = {0x303C,0xF0,0xAAAA};
  1097.  
  1098. pascal OSErr NewMovieFromHandle( Movie *theMovie, Handle h,
  1099.              short newMovieFlags, Boolean *dataRefWasChanged )
  1100.         = {0x303C,0xF1,0xAAAA};
  1101.  
  1102. pascal OSErr NewMovieFromDataFork( Movie *theMovie, short fRefNum, long fileOffset,
  1103.              short newMovieFlags, Boolean *dataRefWasChanged )
  1104.         = {0x303C,0x1B3,0xAAAA};
  1105.  
  1106. pascal OSErr AddMovieResource( Movie theMovie, short resRefNum, short *resId, const StringPtr resName )
  1107.         = {0x303C,0xD7,0xAAAA};
  1108.  
  1109. pascal OSErr UpdateMovieResource( Movie theMovie, short resRefNum, short resId, const StringPtr resName )
  1110.         = {0x303C,0xD8,0xAAAA};
  1111.  
  1112. pascal OSErr RemoveMovieResource( short resRefNum, short resId )
  1113.         = {0x303C,0x176,0xAAAA};
  1114.  
  1115. pascal Boolean HasMovieChanged( Movie theMovie )
  1116.         = {0x303C,0xD9,0xAAAA};
  1117. pascal void ClearMovieChanged( Movie theMovie )
  1118.         = {0x303C,0x113,0xAAAA};
  1119.  
  1120. pascal OSErr SetMovieDefaultDataRef(Movie theMovie, Handle dataRef, OSType dataRefType )
  1121.         = {0x303C,0x1C1,0xAAAA};
  1122. pascal OSErr GetMovieDefaultDataRef(Movie theMovie, Handle *dataRef, OSType *dataRefType)
  1123.         = {0x303C,0x1D2,0xAAAA};
  1124.  
  1125. pascal void FlattenMovie(Movie theMovie, long movieFlattenFlags, 
  1126.             const FSSpec *theFile, OSType creator, ScriptCode scriptTag,
  1127.             long createMovieFileFlags, short *resId, const StringPtr resName)
  1128.         = {0x303C,0x19B,0xAAAA};
  1129.  
  1130. pascal Movie FlattenMovieData(Movie theMovie, long movieFlattenFlags, 
  1131.             const FSSpec *theFile, OSType creator, ScriptCode scriptTag,
  1132.             long createMovieFileFlags)
  1133.         = {0x303C,0x19C,0xAAAA};
  1134.  
  1135. pascal void SetMovieProgressProc(Movie theMovie, MovieProgressProcPtr p, long refcon)
  1136.         = {0x303C,0x19A,0xAAAA};
  1137.  
  1138. /*************************
  1139. * Video Media routines
  1140. **************************/
  1141. pascal HandlerError GetVideoMediaGraphicsMode( MediaHandler mh,
  1142.                         long *graphicsMode, RGBColor *opColor )
  1143.                                 = {0x2F3C,0x8,0x101,0x7000,0xA82A};
  1144. pascal HandlerError SetVideoMediaGraphicsMode( MediaHandler mh,
  1145.                         long graphicsMode, const RGBColor *opColor )
  1146.                                 = {0x2F3C,0x8,0x102,0x7000,0xA82A};
  1147.  
  1148. /*************************
  1149. * Sound Media routines
  1150. **************************/
  1151.  
  1152. pascal HandlerError GetSoundMediaBalance( MediaHandler mh,
  1153.                         short *balance )
  1154.                                 = {0x2F3C,0x4,0x101,0x7000,0xA82A};
  1155. pascal HandlerError SetSoundMediaBalance( MediaHandler mh,
  1156.                          short balance )
  1157.                                 = {0x2F3C,0x2,0x102,0x7000,0xA82A};
  1158.  
  1159.  
  1160. /*************************
  1161. * Text Media routines
  1162. **************************/
  1163.  
  1164. /* Return displayFlags for TextProc */
  1165. enum {
  1166.     txtProcDefaultDisplay = 0,    //    Use the media's default
  1167.     txtProcDontDisplay = 1,        //    Don't display the text
  1168.     txtProcDoDisplay = 2        //    Do display the text
  1169.     };
  1170.  
  1171. typedef pascal OSErr (*TextMediaProcPtr)(Handle theText, Movie theMovie, short *displayFlag, long refcon);        
  1172.     
  1173. pascal ComponentResult SetTextProc(MediaHandler mh, TextMediaProcPtr TextProc, long refcon)
  1174.                                 = {0x2F3C,0x8,0x101,0x7000,0xA82A};
  1175.  
  1176. pascal ComponentResult AddTextSample(MediaHandler mh, Ptr text, unsigned long size, 
  1177.     short fontNumber, short fontSize, Style textFace, RGBColor *textColor,
  1178.     RGBColor *backColor, short textJustification, Rect *textBox, long displayFlags, 
  1179.     TimeValue scrollDelay, short hiliteStart, short hiliteEnd, RGBColor *rgbHiliteColor, 
  1180.     TimeValue duration, TimeValue *sampleTime)
  1181.                                 = {0x2F3C,0x34,0x102,0x7000,0xA82A};
  1182.  
  1183. pascal ComponentResult AddTESample(MediaHandler mh, TEHandle hTE, RGBColor *backColor, 
  1184.     short textJustification, Rect *textBox, long displayFlags, TimeValue scrollDelay,
  1185.     short hiliteStart, short hiliteEnd, RGBColor *rgbHiliteColor, TimeValue duration, 
  1186.     TimeValue *sampleTime)
  1187.                                     = {0x2F3C,0x26,0x103,0x7000,0xA82A};
  1188.  
  1189. pascal ComponentResult AddHiliteSample(MediaHandler mh, short hiliteStart, short hiliteEnd, 
  1190.     RGBColor *rgbHiliteColor, TimeValue duration, TimeValue *sampleTime)
  1191.                                     = {0x2F3C,0x10,0x104,0x7000,0xA82A};
  1192.  
  1193. enum {
  1194.     findTextEdgeOK = 1<<0,            // Okay to find text at specified sample time
  1195.     findTextCaseSensitive = 1<<1,    // Case sensitive search
  1196.     findTextReverseSearch = 1<<2,    // Search from sampleTime backwards
  1197.     findTextWrapAround = 1<<3,        // Wrap search when beginning or end of movie is hit
  1198.     findTextUseOffset = 1<<4        // Begin search at the given character offset into sample rather than edge
  1199.     };
  1200.  
  1201. pascal ComponentResult FindNextText(MediaHandler mh, Ptr text, long size, short findFlags, 
  1202.     TimeValue startTime, TimeValue *foundTime, TimeValue *foundDuration, long *offset)
  1203.                                     = {0x2F3C,0x1A,0x105,0x7000,0xA82A};
  1204.  
  1205. pascal ComponentResult HiliteTextSample(MediaHandler mh, TimeValue sampleTime, short hiliteStart, 
  1206.     short hiliteEnd, RGBColor *rgbHiliteColor)
  1207.                                     = {0x2F3C,0xC,0x106,0x7000,0xA82A};
  1208.  
  1209. #define dropShadowOffsetType 'drpo'
  1210. #define dropShadowTranslucencyType 'drpt'
  1211. pascal ComponentResult SetTextSampleData(MediaHandler mh, void *data, OSType dataType)
  1212.                                     = {0x2F3C,0x8,0x107,0x7000,0xA82A};
  1213.  
  1214.  
  1215. pascal void GetPosterBox( Movie theMovie, Rect *boxRect )
  1216.         = {0x303C,0x16F,0xAAAA};
  1217. pascal void SetPosterBox( Movie theMovie, const Rect *boxRect )
  1218.         = {0x303C,0x170,0xAAAA};
  1219. pascal RgnHandle GetMovieSegmentDisplayBoundsRgn( Movie theMovie, TimeValue time, TimeValue duration )
  1220.         = {0x303C,0x16C,0xAAAA};
  1221. pascal RgnHandle GetTrackSegmentDisplayBoundsRgn( Track theTrack, TimeValue time, TimeValue duration )
  1222.         = {0x303C,0x16B,0xAAAA};
  1223.  
  1224. pascal void SetMovieCoverProcs(Movie theMovie, MovieRgnCoverProc uncoverProc, MovieRgnCoverProc coverProc, long refcon)
  1225.         = {0x303C,0x179,0xAAAA};
  1226. pascal OSErr GetMovieCoverProcs(Movie theMovie, MovieRgnCoverProc *uncoverProc, MovieRgnCoverProc *coverProc, long *refcon)
  1227.         = {0x303C,0x1DD,0xAAAA};
  1228.  
  1229. pascal ComponentResult GetTrackStatus(Track theTrack)
  1230.         = {0x303C,0x172,0xAAAA};
  1231. pascal ComponentResult GetMovieStatus(Movie theMovie, Track *firstProblemTrack)
  1232.         = {0x303C,0x173,0xAAAA};
  1233.  
  1234. /****
  1235.     Movie Controller support routines
  1236. ****/
  1237.  
  1238. pascal ComponentInstance NewMovieController(Movie theMovie, const Rect *movieRect, long someFlags)
  1239.         = {0x303C,0x18A,0xAAAA};
  1240. pascal void DisposeMovieController(ComponentInstance mc)
  1241.         = {0x303C,0x18B,0xAAAA};
  1242.  
  1243. /*****
  1244.     Scrap routines
  1245. *****/
  1246.  
  1247. pascal OSErr PutMovieOnScrap(Movie theMovie, long movieScrapFlags)
  1248.         = {0x303C,0x18C,0xAAAA};
  1249. pascal Movie NewMovieFromScrap(long newMovieFlags)
  1250.         = {0x303C,0x18D,0xAAAA};
  1251.  
  1252.  
  1253. /*****
  1254.     DataRef routines
  1255. *****/
  1256.  
  1257.  
  1258. pascal OSErr GetMediaDataRef( Media theMedia, short index, Handle *dataRef, OSType *dataRefType, long *dataRefAttributes )
  1259.         = {0x303C,0x197,0xAAAA};
  1260. pascal OSErr SetMediaDataRef( Media theMedia, short index, Handle dataRef, OSType dataRefType)
  1261.         = {0x303C,0x1C9,0xAAAA};
  1262. pascal OSErr SetMediaDataRefAttributes( Media theMedia, short index, long dataRefAttributes)
  1263.         = {0x303C,0x1CA,0xAAAA};
  1264. pascal OSErr AddMediaDataRef( Media theMedia, short *index, Handle dataRef, OSType dataRefType )
  1265.         = {0x303C,0x198,0xAAAA};
  1266.  
  1267. pascal OSErr GetMediaDataRefCount( Media theMedia, short *count )
  1268.         = {0x303C,0x199,0xAAAA};
  1269.  
  1270. /*****
  1271.     Playback hint routines
  1272. *****/
  1273.  
  1274. pascal void SetMoviePlayHints( Movie theMovie, long flags, long flagsMask )
  1275.         = {0x303C,0x1A1,0xAAAA};
  1276. pascal void SetMediaPlayHints( Media theMedia, long flags, long flagsMask )
  1277.         = {0x303C,0x1A2,0xAAAA};
  1278.  
  1279.  
  1280. #ifdef __cplusplus
  1281. }
  1282. #endif __cplusplus
  1283.  
  1284.  
  1285. enum {
  1286.  
  1287.     couldNotResolveDataRef = -2000,
  1288.     badImageDescription = -2001,
  1289.     badPublicMovieAtom = -2002,
  1290.     cantFindHandler = -2003,
  1291.     cantOpenHandler = -2004,
  1292.     badComponentType = -2005,
  1293.     noMediaHandler = -2006,
  1294.     noDataHandler = -2007,
  1295.     invalidMedia = -2008,
  1296.     invalidTrack = -2009,
  1297.     invalidMovie = -2010,
  1298.     invalidSampleTable = -2011,
  1299.     invalidDataRef = -2012,
  1300.     invalidHandler = -2013,
  1301.     invalidDuration = -2014,
  1302.     invalidTime = -2015,
  1303.     cantPutPublicMovieAtom = -2016,
  1304.     badEditList = -2017,
  1305.     mediaTypesDontMatch = -2018,
  1306.     progressProcAborted = -2019,
  1307.     movieToolboxUninitialized = -2020,
  1308.     wfFileNotFound = -2021,
  1309.     cantCreateSingleForkFile = -2022,            /* happens when file already exists */
  1310.     invalidEditState = -2023,
  1311.     nonMatchingEditState = -2024,
  1312.     staleEditState = -2025,
  1313.     userDataItemNotFound = -2026,
  1314.     maxSizeToGrowTooSmall = -2027,
  1315.     badTrackIndex = -2028,
  1316.     trackIDNotFound = -2029,
  1317.     trackNotInMovie = -2030,
  1318.     timeNotInTrack = -2031,
  1319.     timeNotInMedia = -2032,
  1320.     badEditIndex = -2033,
  1321.     internalQuickTimeError = -2034,
  1322.     cantEnableTrack = -2035,
  1323.     invalidRect = -2036,
  1324.     invalidSampleNum = -2037,
  1325.     invalidChunkNum = -2038,
  1326.     invalidSampleDescIndex = -2039,
  1327.     invalidChunkCache = -2040,
  1328.     invalidSampleDescription = -2041,
  1329.     
  1330. /* this should probably be in its own range for data handlers */
  1331.     dataNotOpenForRead = -2042,    
  1332.     dataNotOpenForWrite = -2043,    
  1333.     dataAlreadyOpenForWrite = -2044,
  1334.     dataAlreadyClosed = -2045,
  1335.     endOfDataReached = -2046,
  1336.     dataNoDataRef = -2047,
  1337.  
  1338. /* private errors */
  1339.     noMovieFound = -2048,                
  1340.     
  1341.     invalidDataRefContainer = -2049,
  1342.     badDataRefIndex = -2050,
  1343.     noDefaultDataRef = -2051,
  1344.  
  1345.     couldNotUseAnExistingSample = -2052,
  1346.     
  1347.     featureUnsupported = -2053,
  1348.     unsupportedAuxiliaryImportData = -2057,
  1349.     auxiliaryExportDataUnavailable = -2058,
  1350.     noRecordOfApp = movieToolboxUninitialized            /* replica */
  1351.     };
  1352.  
  1353.  
  1354.  
  1355.  
  1356. #define MovieControllerComponentType 'play'
  1357.  
  1358. typedef ComponentInstance MovieController;
  1359.  
  1360. enum {
  1361.     mcActionIdle = 1,                        // no param
  1362.     mcActionDraw = 2,                        // param is WindowPtr
  1363.     mcActionActivate = 3,                    // no param
  1364.     mcActionDeactivate = 4,                    // no param
  1365.     mcActionMouseDown = 5,                    // param is pointer to EventRecord
  1366.     mcActionKey = 6,                        // param is pointer to EventRecord
  1367.     mcActionPlay = 8,                        // param is Fixed, play rate
  1368.     mcActionGoToTime = 12,                    // param is TimeRecord
  1369.     mcActionSetVolume = 14,                    // param is a short
  1370.     mcActionGetVolume = 15,                    // param is pointer to a short
  1371.     mcActionStep = 18,                        // param is number of steps (short)
  1372.     mcActionSetLooping = 21,                // param is Boolean
  1373.     mcActionGetLooping = 22,                // param is pointer to a Boolean
  1374.     mcActionSetLoopIsPalindrome = 23,        // param is Boolean
  1375.     mcActionGetLoopIsPalindrome = 24,        // param is pointer to a Boolean
  1376.     mcActionSetGrowBoxBounds = 25,            // param is a Rect
  1377.     mcActionControllerSizeChanged = 26,        // no param
  1378.     mcActionSetSelectionBegin = 29,            // param is TimeRecord
  1379.     mcActionSetSelectionDuration = 30,        // param is TimeRecord, action only taken on set-duration
  1380.     mcActionSetKeysEnabled = 32,            // param is Boolean
  1381.     mcActionGetKeysEnabled = 33,            // param is pointer to Boolean
  1382.     mcActionSetPlaySelection = 34,            // param is Boolean
  1383.     mcActionGetPlaySelection = 35,            // param is pointer to Boolean
  1384.     mcActionSetUseBadge = 36,                // param is Boolean
  1385.     mcActionGetUseBadge = 37,                // param is pointer to Boolean
  1386.     mcActionSetFlags = 38,                    // param is long of flags
  1387.     mcActionGetFlags = 39,                    // param is pointer to a long of flags
  1388.     mcActionSetPlayEveryFrame = 40,            // param is Boolean
  1389.     mcActionGetPlayEveryFrame = 41,            // param is pointer to Boolean
  1390.     mcActionGetPlayRate = 42,                // param is pointer to Fixed
  1391.     mcActionShowBalloon = 43,                // param is a pointer to a boolean. set to false to stop balloon
  1392.     mcActionBadgeClick = 44,                // param is pointer to Boolean. set to false to ignore click
  1393.     mcActionMovieClick = 45,                // param is pointer to event record. change “what” to nullEvt to kill click
  1394.     mcActionSuspend = 46,                    // no param
  1395.     mcActionResume = 47                        // no param
  1396. };
  1397. typedef short mcAction;
  1398.  
  1399. enum
  1400.     {
  1401.     mcFlagSuppressMovieFrame = 1<<0,
  1402.     mcFlagSuppressStepButtons = 1<<1,
  1403.     mcFlagSuppressSpeakerButton = 1<<2,
  1404.     mcFlagsUseWindowPalette = 1<<3
  1405. };
  1406.  
  1407.  
  1408. enum {
  1409.     mcPositionDontInvalidate = 1<<5
  1410. };
  1411.  
  1412. typedef unsigned long mcFlags;
  1413. typedef pascal Boolean (*MCActionFilter)(MovieController mc, short *action, void *params);
  1414. typedef pascal Boolean (*MCActionFilterWithRefCon)(MovieController mc, short action, void *params, long refCon);
  1415.  
  1416. /*
  1417.     menu related stuff
  1418. */
  1419. enum {
  1420.     mcInfoUndoAvailable = 1<<0,
  1421.     mcInfoCutAvailable = 1<<1,
  1422.     mcInfoCopyAvailable = 1<<2,
  1423.     mcInfoPasteAvailable = 1<<3,
  1424.     mcInfoClearAvailable = 1<<4,
  1425.     mcInfoHasSound = 1<<5,
  1426.     mcInfoIsPlaying = 1<<6,
  1427.     mcInfoIsLooping = 1<<7,
  1428.     mcInfoIsInPalindrome = 1<<8,
  1429.     mcInfoEditingEnabled = 1<<9
  1430. };
  1431.  
  1432. // menu item codes
  1433. enum {
  1434.     mcMenuUndo = 1,
  1435.     mcMenuCut = 3,
  1436.     mcMenuCopy = 4,
  1437.     mcMenuPaste = 5,
  1438.     mcMenuClear = 6
  1439. };
  1440.  
  1441. /**** error codes ******/
  1442. enum {
  1443.     cannotMoveAttachedController = -9999,
  1444.     controllerHasFixedHeight = -9998,
  1445.     cannotSetWidthOfAttachedController = -9997,
  1446.     controllerBoundsNotExact = -9996,
  1447.     editingNotAllowed = -9995,
  1448.     badControllerHeight = -9994
  1449. };
  1450.  
  1451.  
  1452. #ifdef __cplusplus
  1453. extern "C" {
  1454. #endif __cplusplus
  1455. /* target management */
  1456. pascal ComponentResult MCSetMovie (MovieController mc, Movie theMovie, WindowPtr movieWindow, Point where)  = {0x2F3C,0xC,0x2,0x7000,0xA82A};
  1457.  
  1458. pascal Movie MCGetMovie(MovieController mc)   = {0x4267,0x2F3C,0x2,0x5,0x7000,0xA82A};
  1459.  
  1460. pascal ComponentResult MCRemoveMovie (MovieController mc) = {0x2F3C,0,0x6,0x7000,0xA82A};
  1461.  
  1462. /* event handling etc. */
  1463. pascal ComponentResult MCIsPlayerEvent (MovieController mc, const EventRecord *e)  = {0x2F3C,0x4,0x7,0x7000,0xA82A};
  1464.  
  1465. /* obsolete. use MCSetActionFilterWithRefCon instead. */
  1466. pascal ComponentResult MCSetActionFilter (MovieController mc, MCActionFilter blob)  = {0x2F3C,0x4,0x8,0x7000,0xA82A};
  1467.  
  1468. /*
  1469.     proc is of the form:
  1470.         Boolean userPlayerFilter(MovieController mc, short *action, void *params) =
  1471.     proc returns TRUE if it handles the action, FALSE if not
  1472.     action is passed as a VAR so that it could be changed by filter (ick)
  1473.     this is consistent with the current dialog manager stuff
  1474.     params is any potential parameters that go with the action <triple ick> 
  1475.         such as set playback rate to xxx.
  1476. */
  1477. pascal ComponentResult MCDoAction (MovieController mc, short action, void *params)  = {0x2F3C,0x6,0x9,0x7000,0xA82A};
  1478.  
  1479. /* state type things */
  1480. pascal ComponentResult MCSetControllerAttached (MovieController mc, Boolean attach)  = {0x2F3C,0x2,0xA,0x7000,0xA82A};
  1481.  
  1482. pascal ComponentResult MCIsControllerAttached (MovieController mc) = {0x2F3C,0,0xB,0x7000,0xA82A};
  1483.  
  1484. pascal ComponentResult MCSetControllerPort (MovieController mc, CGrafPtr gp)  = {0x2F3C,0x4,0xC,0x7000,0xA82A};
  1485.  
  1486. pascal CGrafPtr MCGetControllerPort (MovieController mc)  = {0x2F3C,0,0xD,0x7000,0xA82A};
  1487.  
  1488. pascal ComponentResult MCSetVisible (MovieController mc, Boolean visible)  = {0x2F3C,0x2,0xE,0x7000,0xA82A};
  1489.  
  1490. pascal ComponentResult MCGetVisible (MovieController mc)  = {0x2F3C,0,0xF,0x7000,0xA82A};
  1491.  
  1492. pascal ComponentResult MCGetControllerBoundsRect (MovieController mc, Rect *bounds)  = {0x2F3C,0x4,0x10,0x7000,0xA82A};
  1493.  
  1494. pascal ComponentResult MCSetControllerBoundsRect (MovieController mc, const Rect *bounds)  = {0x2F3C,0x4,0x11,0x7000,0xA82A};
  1495.  
  1496. pascal RgnHandle MCGetControllerBoundsRgn (MovieController mc)  = {0x2F3C,0,0x12,0x7000,0xA82A};
  1497.  
  1498. pascal RgnHandle MCGetWindowRgn (MovieController mc, WindowPtr w)  = {0x2F3C,0x4,0x13,0x7000,0xA82A};
  1499.  
  1500.  
  1501. /* other stuff */
  1502. pascal ComponentResult MCMovieChanged (MovieController mc, Movie m)  = {0x2F3C,0x4,0x14,0x7000,0xA82A};
  1503.                 
  1504.  
  1505. /*
  1506.     called when the app has changed thing about the movie (like bounding rect) or rate. So that we
  1507.         can update our graphical (and internal) state accordingly.
  1508. */
  1509. pascal ComponentResult MCSetDuration (MovieController mc, TimeValue duration)  = {0x2F3C,0x4,0x15,0x7000,0xA82A};
  1510.  
  1511. /*
  1512.     duration to use for time slider -- will be reset next time MCMovieChanged is called
  1513.         or MCSetMovie is called
  1514. */
  1515. pascal TimeValue MCGetCurrentTime (MovieController mc, TimeScale *scale)  = {0x2F3C,0x4,0x16,0x7000,0xA82A};
  1516.  
  1517. /*
  1518.     returns the time value and the time scale it is on. if there are no movies, the
  1519.         time scale is passed back as 0. scale is an optional parameter
  1520.  
  1521. */
  1522. pascal ComponentResult MCNewAttachedController (MovieController mc, Movie theMovie, WindowPtr w, Point where)  = {0x2F3C,0xC,0x17,0x7000,0xA82A};
  1523.  
  1524. /*
  1525.     makes m the only movie attached to the controller. makes the controller visible.
  1526.     the window and where parameters are passed a long to MCSetMovie and behave as
  1527.     described there
  1528. */
  1529.  
  1530. pascal ComponentResult MCDraw (MovieController mc, WindowPtr w)  = {0x2F3C,0x4,0x18,0x7000,0xA82A};
  1531.  
  1532. pascal ComponentResult MCActivate (MovieController mc, WindowPtr w, Boolean activate)  = {0x2F3C,0x6,0x19,0x7000,0xA82A};
  1533.  
  1534. pascal ComponentResult MCIdle (MovieController mc)  = {0x2F3C,0,0x1A,0x7000,0xA82A};
  1535.  
  1536. pascal ComponentResult MCKey (MovieController mc, char key, long modifiers)  = {0x2F3C,0x6,0x1B,0x7000,0xA82A};
  1537.  
  1538. pascal ComponentResult MCClick (MovieController mc, WindowPtr w, Point where, long when, long modifiers)  = {0x2F3C,0x10,0x1C,0x7000,0xA82A};
  1539.  
  1540.  
  1541. /*
  1542.     calls for editing
  1543. */
  1544. pascal ComponentResult MCEnableEditing (MovieController mc, Boolean enabled)  = {0x2F3C,0x2,0x1D,0x7000,0xA82A};
  1545.  
  1546. pascal long MCIsEditingEnabled (MovieController mc)  = {0x2F3C,0,0x1E,0x7000,0xA82A};
  1547.  
  1548. pascal Movie MCCopy (MovieController mc)  = {0x2F3C,0,0x1F,0x7000,0xA82A};
  1549.  
  1550. pascal Movie MCCut (MovieController mc)  = {0x2F3C,0,0x20,0x7000,0xA82A};
  1551.  
  1552. pascal ComponentResult MCPaste (MovieController mc, Movie srcMovie)  = {0x2F3C,0x4,0x21,0x7000,0xA82A};
  1553.  
  1554. pascal ComponentResult MCClear (MovieController mc)  = {0x2F3C,0,0x22,0x7000,0xA82A};
  1555.  
  1556. pascal ComponentResult MCUndo (MovieController mc)  = {0x2F3C,0,0x23,0x7000,0xA82A};
  1557.  
  1558.  
  1559. /*
  1560.  *    somewhat special stuff
  1561.  */
  1562. pascal ComponentResult MCPositionController (MovieController mc, const Rect *movieRect, const Rect *controllerRect, long someFlags)  = {0x2F3C,0xC,0x24,0x7000,0xA82A};
  1563.  
  1564.  
  1565. pascal ComponentResult MCGetControllerInfo (MovieController mc, long *someFlags)  = {0x2F3C,0x4,0x25,0x7000,0xA82A};
  1566.  
  1567.  
  1568.  
  1569.  
  1570. pascal ComponentResult MCSetClip (MovieController mc, RgnHandle theClip, RgnHandle movieClip)  = {0x2F3C,0x8,0x28,0x7000,0xA82A};
  1571.  
  1572. pascal ComponentResult MCGetClip (MovieController mc, RgnHandle *theClip, RgnHandle *movieClip)  = {0x2F3C,0x8,0x29,0x7000,0xA82A};
  1573.  
  1574.  
  1575. pascal ComponentResult MCDrawBadge (MovieController mc, RgnHandle movieRgn, RgnHandle *badgeRgn)  = {0x2F3C,0x8,0x2A,0x7000,0xA82A};
  1576.  
  1577. pascal ComponentResult MCSetUpEditMenu (MovieController mc, long modifiers, MenuHandle mh)  = {0x2F3C,0x8,0x2B,0x7000,0xA82A};
  1578.  
  1579. pascal ComponentResult MCGetMenuString (MovieController mc, long modifiers, short item, Str255 aString)  = {0x2F3C,0xA,0x2C,0x7000,0xA82A};
  1580.  
  1581. pascal ComponentResult MCSetActionFilterWithRefCon (MovieController mc, MCActionFilterWithRefCon blob, long refCon)  = {0x2F3C,0x8,0x2D,0x7000,0xA82A};
  1582.  
  1583. #ifdef __cplusplus
  1584. }
  1585. #endif __cplusplus
  1586. enum {
  1587.     kMCSetMovieSelect = 0x2,
  1588.     kMCRemoveMovieSelect = 0x6,
  1589.     kMCIsPlayerEventSelect = 0x7,
  1590.     kMCSetActionFilterSelect = 0x8,
  1591.     kMCDoActionSelect = 0x9,
  1592.     kMCSetControllerAttachedSelect = 0xA,
  1593.     kMCIsControllerAttachedSelect = 0xB,
  1594.     kMCSetControllerPortSelect = 0xC,
  1595.     kMCGetControllerPortSelect = 0xD,
  1596.     kMCSetVisibleSelect = 0xE,
  1597.     kMCGetVisibleSelect = 0xF,
  1598.     kMCGetControllerBoundsRectSelect = 0x10,
  1599.     kMCSetControllerBoundsRectSelect = 0x11,
  1600.     kMCGetControllerBoundsRgnSelect = 0x12,
  1601.     kMCGetWindowRgnSelect = 0x13,
  1602.     kMCMovieChangedSelect = 0x14,
  1603.     kMCSetDurationSelect = 0x15,
  1604.     kMCGetCurrentTimeSelect = 0x16,
  1605.     kMCNewAttachedControllerSelect = 0x17,
  1606.     kMCDrawSelect = 0x18,
  1607.     kMCActivateSelect = 0x19,
  1608.     kMCIdleSelect = 0x1A,
  1609.     kMCKeySelect = 0x1B,
  1610.     kMCClickSelect = 0x1C,
  1611.     kMCEnableEditingSelect = 0x1D,
  1612.     kMCIsEditingEnabledSelect = 0x1E,
  1613.     kMCCopySelect = 0x1F,
  1614.     kMCCutSelect = 0x20,
  1615.     kMCPasteSelect = 0x21,
  1616.     kMCClearSelect = 0x22,
  1617.     kMCUndoSelect = 0x23,
  1618.     kMCPositionControllerSelect = 0x24,
  1619.     kMCGetControllerInfoSelect = 0x25,
  1620.     kMCSetClipSelect = 0x28,
  1621.     kMCGetClipSelect = 0x29,
  1622.     kMCDrawBadgeSelect = 0x2A,
  1623.     kMCSetUpEditMenuSelect = 0x2B,
  1624.     kMCGetMenuStringSelect = 0x2C,
  1625.     kMCSetActionFilterWithRefConSelect = 0x2D 
  1626. };
  1627.  
  1628.  
  1629.  
  1630.  
  1631. #ifdef __cplusplus
  1632. extern "C" {
  1633. #endif __cplusplus
  1634.  
  1635. /****************************************
  1636. *                                        *
  1637. *          T  I  M  E  B  A  S  E            *
  1638. *                                        *
  1639. ****************************************/
  1640.  
  1641. pascal TimeBase NewTimeBase(void)
  1642.         = {0x303C,0xA5,0xAAAA};
  1643. pascal void DisposeTimeBase(TimeBase tb)
  1644.         = {0x303C,0xB6,0xAAAA};
  1645.  
  1646. pascal TimeValue GetTimeBaseTime(TimeBase tb,TimeScale s, TimeRecord *tr)
  1647.         = {0x303C,0xA6,0xAAAA};
  1648. pascal void SetTimeBaseTime(TimeBase tb,const TimeRecord *tr)
  1649.         = {0x303C,0xA7,0xAAAA};
  1650. pascal void SetTimeBaseValue(TimeBase tb,TimeValue t,TimeScale s)
  1651.         = {0x303C,0xA8,0xAAAA};
  1652.  
  1653. pascal Fixed GetTimeBaseRate(TimeBase tb)
  1654.         = {0x303C,0xA9,0xAAAA};
  1655. pascal void SetTimeBaseRate(TimeBase tb, Fixed r)
  1656.         = {0x303C,0xAA,0xAAAA};
  1657.  
  1658. pascal TimeValue GetTimeBaseStartTime(TimeBase tb,TimeScale s,TimeRecord *tr)
  1659.         = {0x303C,0xAB,0xAAAA};
  1660. pascal void SetTimeBaseStartTime(TimeBase tb,const TimeRecord *tr)
  1661.         = {0x303C,0xAC,0xAAAA};
  1662. pascal TimeValue GetTimeBaseStopTime(TimeBase tb,TimeScale s,TimeRecord *tr)
  1663.         = {0x303C,0xAD,0xAAAA};
  1664. pascal void SetTimeBaseStopTime(TimeBase tb,const TimeRecord *tr)
  1665.         = {0x303C,0xAE,0xAAAA};
  1666.  
  1667. pascal long GetTimeBaseFlags(TimeBase tb)
  1668.         = {0x303C,0xB1,0xAAAA};
  1669. pascal void SetTimeBaseFlags(TimeBase tb,long timeBaseFlags)
  1670.         = {0x303C,0xB2,0xAAAA};
  1671.  
  1672. pascal void SetTimeBaseMasterTimeBase(TimeBase slave,TimeBase master,
  1673.         const TimeRecord *slaveZero)
  1674.         = {0x303C,0xB4,0xAAAA};
  1675. pascal TimeBase GetTimeBaseMasterTimeBase(TimeBase tb)
  1676.         = {0x303C,0xAF,0xAAAA};
  1677. pascal void SetTimeBaseMasterClock(TimeBase slave,Component clockMeister,
  1678.         const TimeRecord *slaveZero)
  1679.         = {0x303C,0xB3,0xAAAA};
  1680. pascal ComponentInstance GetTimeBaseMasterClock(TimeBase tb)
  1681.         = {0x303C,0xB0,0xAAAA};
  1682.  
  1683. pascal void ConvertTime(TimeRecord *inout,TimeBase newBase)
  1684.         = {0x303C,0xB5,0xAAAA};
  1685. pascal void ConvertTimeScale(TimeRecord *inout,TimeScale newScale)
  1686.         = {0x303C,0xB7,0xAAAA};
  1687. pascal void AddTime(TimeRecord *dst,const TimeRecord *src)
  1688.         = {0x303C,0x10C,0xAAAA};
  1689. pascal void SubtractTime(TimeRecord *dst,const TimeRecord *src)
  1690.         = {0x303C,0x10D,0xAAAA};
  1691.  
  1692. pascal long GetTimeBaseStatus(TimeBase tb,TimeRecord *unpinnedTime)
  1693.         = {0x303C,0x10B,0xAAAA};
  1694.  
  1695. pascal void SetTimeBaseZero(TimeBase tb, TimeRecord *zero)
  1696.         = {0x303C,0x128,0xAAAA};
  1697. pascal Fixed GetTimeBaseEffectiveRate(TimeBase tb)
  1698.         = {0x303C,0x124,0xAAAA};
  1699.  
  1700.  
  1701. /****************************************
  1702. *                                        *
  1703. *          C  A  L  L  B  A  C  K             *
  1704. *                                        *
  1705. ****************************************/
  1706.  
  1707. pascal QTCallBack NewCallBack(TimeBase tb, short cbType)
  1708.         = {0x303C,0xEB,0xAAAA};
  1709.  
  1710. pascal void DisposeCallBack(QTCallBack cb)
  1711.         = {0x303C,0xEC,0xAAAA};
  1712.  
  1713. pascal short GetCallBackType(QTCallBack cb)
  1714.         = {0x303C,0xED,0xAAAA};
  1715. pascal TimeBase GetCallBackTimeBase(QTCallBack cb)
  1716.         = {0x303C,0xEE,0xAAAA};
  1717.  
  1718. pascal OSErr CallMeWhen(QTCallBack cb, QTCallBackProc callBackProc, long refCon,
  1719.                         long param1, long param2, long param3)
  1720.         = {0x303C,0xB8,0xAAAA};
  1721.  
  1722. pascal void CancelCallBack(QTCallBack cb)
  1723.         = {0x303C,0xB9,0xAAAA};
  1724.  
  1725.  
  1726. /****************************************
  1727. *                                        *
  1728. *          C L O C K   C A L L B A C K      *
  1729. *                S U P P O R T              *
  1730. *                                        *
  1731. ****************************************/
  1732.  
  1733. pascal OSErr AddCallBackToTimeBase(QTCallBack cb)
  1734.         = {0x303C,0x129,0xAAAA};
  1735. pascal OSErr RemoveCallBackFromTimeBase(QTCallBack cb)
  1736.         = {0x303C,0x12A,0xAAAA};
  1737. pascal QTCallBack GetFirstCallBack(TimeBase tb)
  1738.         = {0x303C,0x12B,0xAAAA};
  1739. pascal QTCallBack GetNextCallBack(QTCallBack cb)
  1740.         = {0x303C,0x12C,0xAAAA};
  1741. pascal void ExecuteCallBack(QTCallBack cb)
  1742.         = {0x303C,0x12D,0xAAAA};
  1743. #ifdef __cplusplus
  1744. }
  1745. #endif __cplusplus
  1746.  
  1747. #endif __MOVIES__
  1748.